Search code examples
djangodjango-modelsmodelforeign-keys

Django. Adding fields to the model through the admin panel


How to make a model (for example, "Brigade"), the composition of which can be expanded when creating an instance in the admin panel? We don't know in advance how many team members there will be, maybe one, maybe five... Is it possible to get by with one field, for example "members", so as not to write many fields like "member_1", "member_2" and so on?

And how then in the variant with the creation of many fields of the same type to use related_name?

class Brigade(models.Model):

    brigadier = models.ForeignKey(
        'Personal',
        null=True,
        blank=False,
        on_delete=models.SET_NULL,
        verbose_name='brigadier',
        related_name='brigadier'
    )
    member_1 = models.ForeignKey(
        'Personal',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        verbose_name='member_1',
        related_name='brigade'
    )

Solution

  • Just use ManyToMany relation:

    class Brigade(models.Model):
    
        brigadier = models.ForeignKey(...)
    
        members = models.ManyToManyField(
            'Personal',
            related_name='brigades'
        )
    

    Django DOCS