【发布时间】:2019-10-10 20:59:53
【问题描述】:
我正在创建 ModelForm 我尝试更改父类,同时将子类字段保存到数据库中,在我创建的 views.py 中,但它没有保存到数据库中。 这是我的model.py
class Table(models.Model):
restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)
book = models.BooleanField(default=False)
class People(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
taple = models.OneToOneField(Table, on_delete=models.CASCADE, null=True, blank=True)
@receiver(post_save, sender=User)
def update_people_profile(sender, instance, created, **kwargs):
try:
instance.people.save()
except ObjectDoesNotExist:
People.objects.create(user=instance)
类 People 是子类,Table 是父类,所以我使用 People 类来制作表格。这是我的forms.py
class Booking(forms.ModelForm):
class Meta:
model = People
fields = [
'taple',
]
所以我想True Table 类中的book 字段 并在保存预订表单时将其保存到数据库中。这是我的意见。py
def booking(request):
if request.method == 'POST':
try:
people_instance = People.objects.get(user=request.user)
except Table.DoesNotExist:
people_instance = People(user=request.user)
form = Booking(request.POST, instance=people_instance)
if form.is_valid():
user = form.save(commit=False)
user.taple.booking = True
user.refresh_from_db()
user.user = request.user
user.taple = form.cleaned_data.get('taple')
user.save()
print(user.taple.booking, user.taple.id)
return redirect('booked')
else:
form = Booking()
return render(request, 'main/booking.html', {'form': form})
有什么想法吗?
【问题讨论】:
标签: python django django-models django-forms django-views