【发布时间】:2020-01-21 21:25:36
【问题描述】:
我需要创建新对象,或者如果已经存在就更新。我收到:QuerySet' 对象没有属性“座位”。不知道我做错了什么。
型号:
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}'
观看次数
@login_required
def buy_seats(request, pk):
if request.method == "POST" and request.session.get("seats"):
seats = request.session.pop("seats")
movie = Movies.objects.get(pk=pk)
customer = User.objects.get(pk=request.user.id)
for s in seats:
user_reserved_seats = rows_and_seats.objects.get(movie=movie, row=s[:1], number=int(s[2:]))
reservation_check = Reservation.objects.filter(customer=customer, movie=movie)
if reservation_check.exists():
reservation_check.seat.add(user_reserved_seats)
else:
new_reservation = Reservation.objects.create(customer=customer, movie=movie)
new_reservation.seat.add(user_reserved_seats)
messages.success(request,"You have succesfully reserved the seats.")
return redirect("home")
return redirect("home")
我的目标是在 manyTomany 中保留 rows_and_seat,以便在管理面板中仅显示一个用户预订,而不是重复标题列表。
【问题讨论】:
-
reservation_check是一个查询集,Reservation.objects.filter(..可以返回多个Reservation对象。 -
@gdef_ 更改为 objects.get 现在它返回它没有属性 exists() hmmm
-
.get(将只返回一个值而不是查询集,或者如果找不到任何匹配项将引发错误。您确定只会返回 0 或 1 个结果吗?还是有可能拥有多个reservation_checks?
标签: django