问题描述
我正在尝试复制多个数据我只需要更改它们相关的外键我的问题是我能够复制但下面是我的代码 任何建议请
from django.db import models
class Category(models.Model):
category_name = models.CharField(max_length=100)
def __str__(self):
return self.category_name
class Client(models.Model):
cat = models.ForeignKey(Category,on_delete=models.CASCADE,null=True,blank=True)
fname = models.CharField(max_length=100)
lname = models.CharField(max_length=100)
age = models.IntegerField()
married = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_Now_add=True)
updated_at = models.DateTimeField(auto_Now=True)
def __str__(self):
return self.fname + " " + self.lname + " " + str(self.cat)
def show_category(request,cat_id):
clients = Client.objects.filter(cat__id=cat_id)
if request.method =='POST':
for i in clients:
i.id = None
i.cat.id=3
i.save()
return redirect('/')
context = {'clients':clients}
return render(request,'app/home_cat.html',context)
解决方法
请参阅 copying model instances 上的文档:
def change_category(clients,new_category_id):
for client in clients:
client.pk = None
client._state.adding = True
client.cat_id = new_category_id
client.save()