首页 > 解决方案 > 我想在 django raw_id 弹出窗口中选择多个数据并将它们内联添加

问题描述

很高兴认识你们,大家。

我正在 django admin 上创建人才预订系统。models.py 如下。我是 Django 的新手。如果有已经解决的议程,我很抱歉。

[主模型.py]

class Talent(models.Model):
    
        def __str__(self):
            return self.name
    
        class Meta:
            verbose_name = _('Talent')
            verbose_name_plural = _('1-3. Talent')
            ordering = ['id']
    
        name = models.CharField(_('Talent Name'), max_length=128, blank=False, null=False)

class Contract(models.Model):

    def __str__(self):
        return str(self.contract_start_d) + '-' + str(self.contract_end_d)

    class Meta:
        verbose_name = _('Contract')
        verbose_name_plural = _('2-0. Contract')
        ordering = ['id']

    model = models.ForeignKey(Talent, on_delete=models.CASCADE, verbose_name='Talent', blank=False, null=False)

[事件模型.py]

class Ticket(models.Model):
    
    def __str__(self):
        return str(self.id)
    
    class Meta:
        verbose_name = _('Ticket')
        verbose_name_plural = _('3-0. Ticket')
        ordering = ['id']

    name = models.CharField(_('name'), max_length=128, blank=True, null=True)    

class TicketContract(models.Model):

    def __str__(self):
        return self.contract.model.name

    class Meta:
        verbose_name = _('TicketContract')
        verbose_name_plural = _('3-5.TicketContract')
        ordering = ['id']

    ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE, verbose_name='Ticket')
    contract = models.ForeignKey(Contract, on_delete=models.CASCADE, verbose_name='Contract', null=False)

[管理员.py]

class TicketContractInline(admin.TabularInline):
        model = TicketContract
        fieldsets = (
            (_('Talent'), {'fields': (
                'contract',
            )}),
        )
        search_fields = ('contract',)
        raw_id_fields = ('contract',)
        ordering = ('id',)
        extra = 1


class TicketAdmin(admin.ModelAdmin):
    fieldsets = (
        (_('Ticket'), {'fields': (
            'name'
        )}),
    )
    list_display = (
        'id',
    )

    inlines = (TicketContractInline,)

我已经像这样设置了models.py和admin.py,但是我知道在弹出屏幕上选择[Contract]的多个数据并一次将多个数据添加到[Ticket Contract]的内联中的好方法。有人在做吗?

标签: pythondjango

解决方案


推荐阅读