我的 models.py 存档中有这两个模型:
class Ticket(models.Model):
name = models.CharField(max_length=50)
description_issue = models.CharField(max_length=1000)
pub_date = models.DateTimeField("publication date", default=timezone.now)
class PossibleSolution(models.Model):
title = models.CharField(max_length=50)
description_solution = models.CharField(max_length=1000)
final = models.BooleanField()
sol_date = models.DateTimeField("solution date", default=timezone.now)
tickets = models.ForeignKey(Ticket, blank=True, null=True)
示例:我有一个票证,其中包含名称、描述和发布日期,然后我创建一个 MaybeSolution,并在创建 MaybeSolution 的表单中选择相关票证。
然后,我以另一种形式更新原始票证,更改其名称,然后丢失我创建的可能解决方案。
这里会发生什么?
编辑:这是我编辑票证的地方
class TicketForm(forms.ModelForm):
class Meta:
def __init__(self, *args, **kwargs):
super(TicketForm, self).__init__(*args, **kwargs)
self.fields['pub_date'].widget = widgets.AdminSplitDateTime()
self.fields['closing_date'].widget = widgets.AdminSplitDateTime()
self.fields['issuer'].widget.attrs['readonly'] = True
model = Ticket
fields = '__all__'
labels = {
'name': _('Nombre'),
'description_issue': _('Descripción'),
'pub_date': _('Fecha de creacion'),
'closing_date': _('Fecha de cierre'),
'priority': _('Prioridad'),
'issuer': _('Creado por'),
'category': _('Categoría')
}
widgets = {
'pub_date': DateTimeWidget(attrs={'id': "pub_date"}, usel10n=True, bootstrap_version=3),
'closing_date': DateTimeWidget(attrs={'id': "closing_date"}, usel10n=True, bootstrap_version=3),
}
这是我发布帖子的 View
def ticket(request, id_ticket):
if request.method == "POST":
form = TicketForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.save()
messages.success(request, 'ticket-saved')
if id_ticket and int(id_ticket) > 0:
# I have this because I don't know how to really modify
Ticket.objects.get(id=id_ticket).delete()
return redirect('index')
最佳答案
删除执行删除查询的行,
def ticket(request, id_ticket):
ticket = Ticket.objects.get(id=id_ticket)
if request.method == "POST":
form = TicketForm(request.POST, instance=ticket)
if form.is_valid():
post = form.save(commit=False)
post.save()
messages.success(request, 'ticket-saved')
return redirect('index')
else:
form = TicketForm(instance=ticket)
return render(request, 'template_name', {'form':form})
关于python - 当我更新具有外键的模型对象时,Django 模型对象被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46342625/