Django Администратор добавить шаблон: объединить поля для сохранения в БД - PullRequest
0 голосов
/ 15 января 2020

Я новичок в Python и Django, и мне нужна помощь опытных питонистов. У меня есть модель юнита, подобная этой:

class Unit(models.Model):
    unit_type = models.CharField("Unit type", max_length=25)
    content = models.TextField()

Я хочу добавить несколько юнитов с панели администратора. Но в поле содержимого мне нужно иметь JSON -сериализованный объект, содержащий кучу данных, поэтому я хочу позволить пользователям добавлять эти данные через обычные поля, комбинировать их в JSON программно и сохранять в содержимом , Но когда я пытаюсь зарегистрировать эту модель в Admon следующим образом:

class UnitAdmin(admin.ModelAdmin):
    fieldsets = [
        (None, {'fields': ['unit_type', 'url', 'name']}),
    ]

admin.site.register(Unit, UnitAdmin)

я получаю сообщение об ошибке:

FieldError at /admin/cms/unit/add/
Unknown field(s) (name, url) specified for Unit. Check fields/fieldsets/exclude attributes of class UnitAdmin.

Могу ли я каким-то образом собрать больше данных в моей панели администратора, чем мне нужно сохранить в базе данных?

Обновление

Мне удалось создать дополнительные поля с помощью класса modelForm, благодаря предложению Алекса. Но когда я сохраняю модель, я не знаю, как присвоить значение полю содержимого. Мой код теперь такой:

class UnitForm(forms.ModelForm):
    name = forms.CharField(max_length=200)
    url = forms.CharField(max_length=200)

    class Meta:
        model = Unit
        fields = ["name", "url", "unit_type"]


class UnitAdmin(admin.ModelAdmin):
    form = UnitForm

Я знаю, как получить значения name и url в классе modelForm, но я не могу назначить их в поле содержимого модели Unit. Как мне это сделать?

...