Für die folgende Modellgruppe (Foo, Bar) können Sie eine Kreuzvalidierungsregel wie die in der Bar.clean des folgenden Codeausschnitts bis zum Django erzwingen 1.7.Django 1.8.3 - Modellfeldvalidierung mit zugehörigem Objekt
Das gleiche Snippet löst einen RelatedObjectDoesNotExist
Fehler in Django 1.8.3.
Was ist der neue und verbesserte Weg, um das gleiche Ergebnis in Django 1.8.3 zu erreichen?
(Ich habe den admin.py Code enthalten nur um zu zeigen, wie diese Modelle verwendet werden.)
models.py
from django.db import models
from django.core.exceptions import ValidationError
class Foo(models.Model):
name = models.CharField("Name", blank=True, max_length=300)
class Bar(models.Model):
name = models.CharField("Name", blank=True, max_length=300)
foo = models.ForeignKey('Foo', verbose_name='Foo')
def clean(self):
if self.name + self.foo.name != 'FooBar':
raise ValidationError('Concatenation should be FooBar.')
admin.py
from django.contrib import admin
import models
class BarInline(admin.TabularInline):
model = models.Bar
class FooAdmin(admin.ModelAdmin):
model = models.Foo
inlines = [BarInline,]
site = admin.site
site.register(models.Foo,FooAdmin)
Diese Selbstbeobachtung sehr nützlich war, Danke. Haben Sie eine Ahnung, warum Django-Entwickler die Möglichkeit, verwandte Objekte von einer model clean() -Methode zu entfernen, entfernen könnten, was ziemlich praktisch erscheint? –