Django 如何修复QuerySet';对象没有属性问题?

Django 如何修复QuerySet';对象没有属性问题?,django,Django,我需要创建新对象,或者只是更新(如果已经存在)。我收到:QuerySet对象没有属性“seat”。不知道我做错了什么 型号: class rows_and_seats(models.Model): movie = models.ForeignKey(Movies, on_delete=models.CASCADE) row = models.CharField(max_length = 1) number = models.IntegerField() def

我需要创建新对象,或者只是更新(如果已经存在)。我收到:QuerySet对象没有属性“seat”。不知道我做错了什么

型号:

class rows_and_seats(models.Model):
    movie = models.ForeignKey(Movies, on_delete=models.CASCADE)
    row = models.CharField(max_length = 1)
    number = models.IntegerField()

    def __str__(self):
        return f'{self.movie}' 

class Reservation(models.Model):
    customer = models.ForeignKey(User, on_delete=models.CASCADE)
    movie = models.ForeignKey(Movies, on_delete=models.CASCADE)
    seat = models.ManyToManyField(rows_and_seats)
    ordered = models.DateTimeField(default=datetime.now().strftime("%Y-%m-%d %H:%M:%S"), blank=True, null=True) 

    def __str__(self):
        return f'{self.customer.username}:{self.movie.title}:{self.ordered}'
观点


我的目标是在许多行中保留行和座位,以便在管理面板中只显示一个用户预订,而不是重复标题列表。

您可以在
存在()后访问该值。
检查:

if reservation_check.exists():
    reservation_check.first().seat.add(user_reserved_seats)
else:
    new_reservation = Reservation.objects.create(customer=customer, movie=movie)
    new_reservation.seat.add(user_reserved_seats)
也许您可以使用以下内容:


另外,您可能在座位上循环了太多次,可能您可以在一个作业中添加所有座位。

reservation\u check
是一个查询集,
reservation.objects.filter(..
可以返回多个
reservation
对象。@gdef\uu已更改为objects.get,现在返回它没有属性exists()hmmm
.get(
将只返回一个值而不是查询集,或者如果找不到任何匹配项,则将引发错误。您确定只返回0或1个结果吗?或者是否有可能有多个
保留检查对我有效,非常感谢:)我是django的新手,仍然犯了很多错误没有问题!检查我的编辑,也许你可以使用
get\u或\u create
update\u或\u create
。检查文档,django的文档真的很好。酷,很有魅力:)代码越少=代码越好!如果你不介意的话,我还有最后一个小问题。创建新预订时,新信息也会显示在manyToMany中的先前预订中。正确的数据应该是灰色的,但我仍然想摆脱其余的东西。太好了!对不起,我不完全理解这个新问题,也许你可以用更多的数据和例子写一篇新文章,我可以看一下。此外,如果你不介意投票的答案,这将是伟大的!谢谢你接受它的正确性!
if reservation_check.exists():
    reservation_check.first().seat.add(user_reserved_seats)
else:
    new_reservation = Reservation.objects.create(customer=customer, movie=movie)
    new_reservation.seat.add(user_reserved_seats)
user_reserved_seats = rows_and_seats.objects.get(movie=movie, row=s[:1], number=int(s[2:]))
reservation, created = Reservation.objects.get_or_create(
    customer=customer, movie=movie,
)
reservation.seat.add(user_reserved_seats)