http://docs.djangoproject.com/en/dev/re ... e-together
Jedoch ist das Datenbank abhängig, ob es auch zu einem Fehler kommt, wenn doppelte Einträge erzeugt werden.
Nun habe ich mir ein signal handler gebaut, der es manuell überprüft:
Code: Alles auswählen
def check_unique_together(sender, **kwargs):
instance = kwargs["instance"]
for field_names in sender._meta.unique_together:
model_kwargs = dict([(field_name, getattr(instance, field_name)) for field_name in field_names])
count = sender.objects.filter(**model_kwargs).count()
if count > 0:
field_names = get_text_list(field_names, _('and'))
msg = _(u"%(model_name)s with this %(field_names)s already exists.") % {
'model_name': unicode(instance.__class__.__name__),
'field_names': unicode(field_names)
}
raise IntegrityError(msg)
Code: Alles auswählen
def auto_add_check_unique_together(model_class):
"""
Add only the signal handler check_unique_together, if a database without UNIQUE support is used.
"""
if settings.DATABASE_ENGINE in ('sqlite3',): # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
signals.pre_save.connect(check_unique_together, sender=model_class)
In connection.features ist keine Angabe darüber erhalten. Wie komme ich an die Info's aus django herran?