Вы не должны добавлять новое поле в форму таким образом, вы можете просто сделать это так же, как любое другое поле, и форма будет содержать как исходные поля модели, так и ваши новые поля:
class SitesForm(forms.ModelForm):
mynewfield = forms.CharField(max_length=255, blank=True)
class Meta:
model = Sites
class SitesAdmin(admin.ModelAdmin):
form = SitesForm
admin.site.register(Sites, SitesAdmin)
Редактировать : Извините, должен был прочитать то, что вы написали немного лучше.Если вам нужно такое поле dynamic , то вам нужно сделать следующее, и оно будет делать именно то, что вы хотите:
class SitesForm(forms.ModelForm):
class Meta:
model = Sites
def __init__(self, *args, **kwargs):
self.base_fields['mynewfield'] = forms.CharField(max_length=255, blank=True)
super(SitesForm, self).__init__(*args, **kwargs)
class SitesAdmin(admin.ModelAdmin):
form = SitesForm
admin.site.register(Sites, SitesAdmin)
Это базовые поля, которые создаются метаклассом, которыйсодержит поля, которые будет использовать форма.