嗨,我刚刚在学习django,并试图创建一个在物品和订单之间有很多关系的模型表单 下面是我的代码片段
models.py
class Item(models.Model):
name = models.CharField(max_length=25,default="",primary_key=True)
weight = models.FloatField()
def __str__(self):
return self.name
class Order(models.Model):
customername = models.CharField(max_length=25,default="")
item = models.ManyToManyField(Item,default="")
metal = models.ForeignKey(Material,on_delete=models.CASCADE)
price = models.IntegerField()
place = models.CharField(max_length=25)
orderdate = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.customername
forms.py:
from django import forms
from .models import Order, Material, Item
class ItemForm(forms.ModelForm):
class Meta:
model = Item
fields = '__all__'
class OrderForm(forms.ModelForm):
class Meta:
model = Order
fields = '__all__'
views.py:
def ItemSaveorUpdate(request):
if request.method == 'POST':
form = ItemForm(request.POST)
if form.is_valid():
form.save()
messages.add_message(request,messages.SUCCESS,"Movie rating submitted succesfully")
else:
form = ItemForm()
return render(request,'addItem.html',{"form":form})
def OrderSaveorUpdate(request):
if request.method == 'POST':
form = OrderForm(request.POST)
if form.is_valid():
form.save()
messages.add_message(request,messages.SUCCESS,"Order added succesfully")
return redirect('material')
elif request.method == 'PUT':
item = Item.objects.get(pk=id)
form = OrderForm(instance=item)
form.save()
else:
#item = Item.objects.get(pk=id)
form = OrderForm()
return render(request,'addOrder.html',{"form":form})
Template additem.html:
<form action="{% url 'item' %}" request="post">
{% csrf_token %}
{{form.as_p }}
<input type="submit" value="add">
</form>
urls.py:
urlpatterns = [
path('item/', views.ItemSaveorUpdate, name="item"),
path('material/', views.MaterialSaveorUpdate, name="material"),
path('order/', views.OrderSaveorUpdate, name="order"),
我试图在创建订单时选择多个项目,单击“添加”后,在/collection/order处给出错误IntegrityError/ 外键约束失败。重要的是要提到的是,订单正在添加,我可以看到在管理面板,但项目没有得到选择。 请帮助避免这个问题,让我知道我错过了什么
多谢各位
通过在models.py中删除Order类中项目字段的默认值,问题得以解决
它现在运转良好
多谢各位
相关问题 更多 >
编程相关推荐