Django管理更改多对多标签文本

2024-10-02 00:44:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我把场地作为教室的一部分

roomextra = models.ManyToManyField(
    to='hotel.RoomExtra',
    related_name='room_extra',
    verbose_name='room extra',
)

Django为我创造了多对多的关系。此关系显示为表格行:

管理员

class RoomExtraInLine(admin.TabularInline):
    model = Room.roomextra.through
    extra = 1
    verbose_name = _('Customise Room Extra')
    verbose_name_plural = _('Customise Room Extra(s)')
    form = AddRoomAddRoomExtrasForm

在Django admin中,如果我添加一个额外的房间,我会得到下图中的文本:

enter image description here

Room_roomextra object (5)

上面是我选择的选项。我怎样才能换房间呢

更新

按要求编码

class RoomExtra(models.Model):

    PER_PERSON = 0
    PER_ROOM = 1
    PER_CHOICES = [
        (PER_PERSON, _('Person')),
        (PER_ROOM, _('Room')),
    ]

    name = models.CharField(max_length=100)
    cost = models.DecimalField(
        default="0.00",
        max_digits=10,
        decimal_places=2,
        validators=[MinValueValidator(Decimal('0.00'))],
    )
    cost_per = models.IntegerField(
        choices=PER_CHOICES,
        default=PER_ROOM,
        verbose_name=_('Cost per'),
    )

    def __str__(self):
        return self.name


class Room(models.Model):

    name = models.CharField(max_length=100)
    type = models.ForeignKey(
        to='hotel.RoomType',
        on_delete=models.CASCADE,
    )
    location = models.ForeignKey(
        to='hotel.Location',
        on_delete=models.CASCADE,
    )
    description = models.TextField(
        blank=True,
        max_length=500,
    )
    roomextra = models.ManyToManyField(
        to='hotel.RoomExtra',
        related_name='room_extra',
        verbose_name='room extra',
    )
    bathroom = models.ForeignKey(
        to='hotel.Bathroom',
        on_delete=models.CASCADE,
    )
    available = models.BooleanField(default=True,)

    def __str__(self):
        return self.name

Tags: tonameselfverbosemodelsextrahotelmax
1条回答
网友
1楼 · 发布于 2024-10-02 00:44:23

为Room//Room Extra添加代理模型允许在Django admin上更改输出文本

class RoomRoomExtraProxy(Room.roomextra.through):
    class Meta:
        proxy = True

    def __str__(self):
        return self.room.name + ' // ' + self.roomextra.name

相关问题 更多 >

    热门问题