我正在尝试将数据添加到我的模型项目中:
class Item(models.Model):
name = models.CharField(max_length = 70)
description = models.TextField()
price = models.IntegerField()
category_id = models.ForeignKey('Category')
type_id = models.ForeignKey('Type')
user_id = models.ForeignKey('User')
def __str__(self):
return self.name
form.py:
from django import forms
from .models import User, Item, Type, Image, Category
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ('fname', 'lname', 'contact', 'username', 'password')
class ItemForm(forms.ModelForm):
class Meta:
model = Item
fields = ('name', 'description', 'price', 'category_id' )
views.py
def item_add(request, pk, type_pk):
user = get_object_or_404(User, pk=pk)
try:
if request.session['username'] == user.pk:
categories = Category.objects.all()
#type_submit is the submit button for item_add.html form.
#button is either [buy] or [sell]
type_submit = get_object_or_404(Type, pk=type_pk)
types = Type.objects.all()
if request.method == "POST":
form = ItemForm(request.POST)
if form.is_valid():
item = form.save()
item.save()
item.objects.create(type_id=type_pk, user_id=pk)
return redirect('system.views.user_home', pk=pk)
else:
form = ItemForm()
return render(request, 'system/item_add.html', {'form':form, 'categories': categories,
'type_submit': type_submit, 'types': types})
except KeyError:
return redirect('system.views.user_login')
当我点击add_item.html中的提交按钮时,没有任何反应。我的数据库中没有添加数据。我的表单中没有包含type_id和user_id(它们是外键)。因为我不想在add_item.html(表单)中显示它。我只是想在提交后直接添加它。 请帮帮我们。我对此感到疯狂。
答案 0 :(得分:0)
你必须给予;
type_id = models.ForeignKey('Type', null=True, blank=True)
user_id = models.ForeignKey('User', null=True, blank=True)
这里blank = True将有助于表单提交,null = True有助于将数据保存到表
和
item.objects.create(type_id=type_pk, user_id=pk)
这应该改为;
item.objects.create(type_id=type_submit, user_id=user)
因为相关字段应添加对象。