0
我希望能夠清除Inline中對象的ForeignKey關聯,但不是實際刪除該對象。我如何使用Django的驗證來防止對象被刪除?如何防止刪除InlineForm驗證中的對象?
我希望能夠清除Inline中對象的ForeignKey關聯,但不是實際刪除該對象。我如何使用Django的驗證來防止對象被刪除?如何防止刪除InlineForm驗證中的對象?
class LocationInlineFormset(forms.models.BaseInlineFormSet):
def clean(self):
for form in self.forms:
try:
if form.cleaned_data:
loc = Location.objects.filter(/* filter to find the location being edited/added */)
if loc:#This validation only matters if we're not adding a new location
loc = loc[0]
if form.cleaned_data['DELETE']:
# Clear the Foreign Key Association
loc.strain = None
loc.save()
# Prevent Deletion
form.data[form.add_prefix('DELETE')] = 'false'
except AttributeError:
# annoyingly, if a subform is invalid Django explicity
# raises an AttributeError for cleaned_data
pass
class LocationInline(admin.TabularInline):
formset = LocationInlineFormset
model = Location
extra = 3
max_num = 3
can_delete = True
class StrainAdmin(MyAdmin):
inlines = [LocationInline]