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

Python Django管理更改多对多标签文本,python,django,django-models,django-forms,django-admin,Python,Django,Django Models,Django Forms,Django Admin,我把场地作为教室的一部分 roomextra = models.ManyToManyField( to='hotel.RoomExtra', related_name='room_extra', verbose_name='room extra', ) Django为我创造了多对多的关系。此关系显示为表格行: 管理员 class RoomExtraInLine(admin.TabularInline): model = Room.roomextra.throug

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

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中,如果我添加一个额外的房间,我会得到下图中的文本:

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

更新

按要求编码

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

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

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

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

RoomExtra
model是否实现了str方法?@Charnel Room和RoomExtra都实现了“str”,你能分享这部分代码吗?@Charnel看到更新了吗?你有没有可能使用Py2?
class RoomRoomExtraProxy(Room.roomextra.through):
    class Meta:
        proxy = True

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