Dla poniższego zestawu modeli (Foo, Bar) można nałożyć regułę sprawdzania poprawności krzyżowej, taką jak ta na pasku Bar.clean następującego fragmentu kodu do django 1.7.Django 1.8.3 - sprawdzanie poprawności modelu z powiązanym obiektem
Ten sam fragment wyrzuca błąd RelatedObjectDoesNotExist
w django 1.8.3.
Jaki jest nowy i ulepszony sposób osiągnięcia tego samego wyniku w django 1.8.3?
(podaję kod admin.py tylko pokazać, jak wykorzystywane są te modele.)
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)
Ta introspekcja była bardzo przydatna, Dziękuję Ci. Czy masz pojęcie, dlaczego programiści Django usuną możliwość wyszukiwania powiązanych obiektów z metody clean(), która wydaje się być przydatna? –