Создание формы с вводом для 2 моделей django

Я создал 2 модели,

models.py

class Integrations(models.Model):
    subscription_id = models.UUIDField(
        primary_key=True, default=uuid.uuid4, unique=True, editable=False
    )
    subscription_name = models.CharField(max_length=256)
    subscription_type = models.CharField(
        max_length=256, choices=SUBSCRIPTION_TYPE, default="mqtt"
    )

    def __str__(self):
        return self.subscription_name

    class Meta:
        ordering = ["subscription_name"]
        verbose_name = "Integration"
        verbose_name_plural = "Integrations"


class Subscription(models.Model):
    url = models.CharField(max_length=256)
    port = models.IntegerField()
    username = models.CharField(max_length=256)
    password = models.CharField(max_length=256)
    topics = ArrayField(models.CharField(max_length=256))
    subscription_id = models.ForeignKey(Integrations, default=None, on_delete=models.CASCADE)

admin.py

class MQTTSubscriptionAdmin(admin.ModelAdmin):
    fields = [ 'subscription_id', 'mqtt_url', 'port', 'username', 'password', 'subscribed_topics']
    add_form = NewMQTTCreationForm
    fieldsets = None
    add_form_template = 'integrations/add_new_integration.html'
    add_fieldsets = (
    (None, {
        'classes': ('wide',),
        'fields': ('subscription_id', 'subscription_name', 'subscription_type'),
    }),
)
    

forms.py

from django import forms
from django.core.exceptions import ValidationError

class NewMQTTCreationForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(NewMQTTCreationForm, self).__init__(*args, **kwargs)
        self.fields['url'].required = True
        self.fields['port'].required = True
        self.fields['username'].required = False
        self.fields['password'].required = False
        self.fields['subscription_id'].required = True
        self.fields['subscribed_topics'].required = False

add_new_integration.html

{% extends "admin/change_form.html" %}
{% load i18n admin_urls static admin_modify jazzmin %}
{% get_jazzmin_settings request as jazzmin_settings %}

{% block form_top %}
<!-- empty block to remove default user create text -->
{% endblock %}

{% block field_sets %}
    <div class="col-12 col-lg-9">
        <div class="card">
            <div class="card-body">
                {% get_changeform_template adminform as changeform_template %}
                {% include changeform_template %}
            </div>
        </div>
    </div>
{% endblock %}

Здесь я хочу создать форму, в которой при создании новой подписки, она должна позволить мне добавить поля, необходимые для создания новой интеграции. как я могу это сделать?

Также поля, для которых установлено значение False, все еще отображаются как обязательные.

Вернуться на верх