我的模特就像
class Dish(models.Model):
names = models.ManyToManyField(DishName)
restaurant = models.ManyToManyField(Restaurant)
我的视图文件就像
def AddDish(request):
if request.method == 'POST':
dishname = request.POST.get('name')
res = request.POST.get('restaurant')
restaurant = Restaurant.objects.get(id=res)
r = Dish(generic_name=GenericName,
names=dishname,
restaurant=restaurant,
)
r.save()
当我尝试将我的值添加到Dish模型中时,发生此错误
禁止直接分配给多对多集的正面。改用restaurant.set()。
我尝试使用set,但是Didnt没有像我尝试restaurant.set(r)
那样在何处使用它,但是到目前为止还没有运气。任何帮助将不胜感激。预先感谢
答案 0 :(得分:1)
def AddDish(request):
if request.method == 'POST':
dishname = request.POST.get('name')
res = request.POST.get('restaurant')
restaurant = Restaurant.objects.get(id=res)
dn = DishName(name=dishname)
r = Dish.objects.create()
r.restaurant.add(restaurant)
r.names.add(dn)
但是,我不是确信,在这里您应该首先使用ManyToManyField
。如果某道菜只属于一个{em> {em} Restaurant
,那么您可能应该使用ForeignKey
。
您首先需要保存您的Dish
之前,您可以更改ManyToMany
关系,否则,您的Dish
没有分配主键。
答案 1 :(得分:1)
如果您想使用.set
==>
def AddDish(request):
if request.method == 'POST':
dishname = request.POST.get('name')
res_id = request.POST.get('restaurant')
restaurant = Restaurant.objects.get(id=res_id)
dn = DishName.objects.get(name=dishname)
dish = Dish.objects.create(generic_name=GenericName)
dish.names.set([dn])
dish.restaurant.set([restaurant])
dish.save()