Есть две модели : User, Message
class Message(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
content = models.CharField(max_length=5000)
chat_room = models.ForeignKey(ChatRoom,on_delete=models.CASCADE)
class User(AbstractUser):
about = models.CharField(max_length=1000, default="",blank=True)
first_name = models.CharField(_('first name'), max_length=30, blank=False)
last_name = models.CharField(_('last name'), max_length=150, blank=False)
email = models.EmailField(_('email address'), blank=False)
admin.py
class MessageAdminForm(ModelForm):
class Meta:
model = Message
fields = ('chat_room','content')
class MessageInline(admin.TabularInline):
form = MessageAdminForm
model = Message
class UserAdmin(admin.ModelAdmin):
inlines = [MessageInline]
admin.site.register(User)
Я хочу чтобы в инлайне сообщения в поле выбора chatroom отображались только те комнаты в которых участвует текущий выбранный пользователь
Чтобы изменить варианты поля chatroom я сделал так:
class MessageAdminForm(ModelForm):
class Meta:
model = Message
fields = ('chat_room','content')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance:
self.fields['chat_room'].queryset = User.objects.get(pk=?????.id).chatroom_set.all()
Как в init методе формы можно получить объект пользователя?