我有以下models.pyDjango的迴歸和相關模型
class Contact(models.Model):
pass
class Link(models.Model):
pass
class Relationship(models.Model):
# Documentation
__doc__ = _(u'Stores a relationship between 2 contacts.')
# Attributes
from_contact = models.ForeignKey(Contact, related_name='from_contacts', verbose_name=_(u'first contact'), help_text=_(u'The first contact implicated by the relationship.'))
link = models.ForeignKey(Link, related_name=u'relationships', verbose_name=_(u'relationship link'), help_text=_(u'The relationship link between both contacts.'))
to_contact = models.ForeignKey(Contact, related_name='to_contacts', verbose_name=_(u'second contact'), help_text=_(u'The second contact implicated by the relationship.'))
# Meta-data
class Meta:
verbose_name = u'Relationship'
verbose_name_plural = u'Relationships'
unique_together = ('from_contact', 'link', 'to_contact')
使用Django的基於類的視圖和Revision Context Manager
,我可以創造修訂隨時創建2個觸點之間的新關係
# part of my views.py
class RelationshipCreateView(LoginRequiredMixin, CreateView):
template_name = u'frontend/relationships/relationship-create.html'
model = Relationship
form_class = RelationshipForm
def get_success_url(self):
return reverse_lazy('contact-detail', kwargs={'contact_pk': self.kwargs['contact_pk']})
def form_valid(self, form):
contact = Contact.objects.get(pk=self.kwargs['contact_pk'])
link = form.cleaned_data['link']
other = form.cleaned_data['other']
inverse = form.cleaned_data['inverse_relationship']
relationship = None
if not inverse:
relationship = Relationship(
from_contact=contact,
link=link,
to_contact=other
)
else:
relationship = Relationship(
from_contact=other,
link=link,
to_contact=contact
)
with reversion.create_revision():
relationship.save()
reversion.set_comment(_(u'A relationship has been added between %(from)s and %(to)s' % {'from': relationship.from_contact, 'to': relationship.to_contact}))
return HttpResponseRedirect(self.get_success_url())
但是隻有其中一個聯繫人獲得修訂版(第一個)以及隨附的評論。如何使用Revision Context Manager
來創建兩個修訂版本?
嘗試循環內一個列表['從','到'],第二次是反向關係。 – jcs
你說的是保存兩個聯繫人? – TonyEight
我知道這個問題很老,但你有沒有解決這個問題?你[註冊外鍵要遵循](http://django-reversion.readthedocs.org/en/latest/api.html#advanced-model-registration)? – tutuDajuju