【发布时间】:2023-03-29 22:39:01
【问题描述】:
我正在 django 上构建帮助台系统。任何人都可以为客户支持开票。 假设我有一个父对象 #001,并且该父对象的每个子对象都具有相同的票证 ID。请参阅屏幕截图以更好地理解:
child1 和 child2 具有与其父对象相同的票证 ID。如果它们具有相同的票证 ID,如何对所有对象应用批量更新?假设如果我更改 child2 的票证状态,那么我希望它也将应用 child1 和父对象的批量更新。知道如何在 django 上做到这一点吗? 这是我的代码:
models.py
class Contact(models.Model):
choice = (("pending","pending"),("solved","solved"),("closed","closed"))
ticket_status = models.CharField(choices=choice,max_length=100,default="pending")
parent =models.ForeignKey('self', on_delete=models.CASCADE,
null=True, blank=True, related_name='contact_parent')
sno = models.AutoField(primary_key=True,)
def save(self,*args,**kwargs):
if not self.parent and not self.support_ticket:
self.support_ticket= str(rand_support_ticket())
if not self.support_ticket:
self.support_ticket = self.parent.support_ticket
super(Contact,self).save(*args,**kwargs)
forms.py
class SupportAgentFrom(forms.ModelForm):
class Meta:
model = Contact
fields = ['support_message','ticket_status']
views.py
def AddReplySupport(request,slug):
# fetch the object related to passed id
obj = get_object_or_404(Contact, slug = slug)
# pass the object as instance in form
form = SupportAgentFrom(request.POST or None, instance = obj)
if form.is_valid():
form.instance.support_agent = request.user
form.save()
现在我一次只能更新一个对象。如果它们具有相同的票证 ID,我想一次对多个对象应用批量更新。
#Update1 最终我的问题在遵循 Dan Yishai 解决方案后得到解决。在这里,我想稍微解释一下他的代码,以便人们能够理解并解决我面临的此类类似问题。
Contact.objects.filter(
Q(support_ticket=form.instance.support_ticket)
).update( ticket_status="closed")
上面的代码只搜索和更新那些具有完全相同票证ID的对象。
【问题讨论】:
标签: python-3.x django