0

我希望能够清除内联中对象的 ForeignKey 关联,但实际上不能删除该对象。如何使用 Django 的验证来防止对象被删除?

4

1 回答 1

0
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]
于 2012-09-26T18:25:40.927 回答