У меня есть форма модели django, которая создает новое listing
в моем приложении post
, я хотел бы связать это с идентификатором company
, который является типом учетной записи в моем приложении account
.
Таблица account_company
db (postgresql) имеет поле user_id
, которое является pk
из User
. таблица post_listing
будет иметь поле company
, которое, я думаю, должно быть pk
из account_company
.
Поскольку я пытаюсь использовать формы моделей для всех форм, у меня возникла проблема с созданием этой ассоциации.
# models.py
class Listing(models.Model):
title = models.CharField(max_length=200)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
...
# forms.py
class newListingForm(forms.ModelForm):
class Meta:
model = Listing
fields = ('title'...)
def __init__(self, user, *args, **kwargs):
super(newListingForm, self).__init__(*args, **kwargs)
self.fields['company'].queryset = Company.objects.filter(pk__user_id=user.id)
# above i am trying to filter the AutoField to the `company pk` where `user_id` is equal to `request.user.id`
# views.py
def post(request):
if request.method == 'POST':
form = newListingForm(request.user, request.POST)
if form.is_valid():
listing = form.save(commit=False)
listing.user = request.user
listing.save()
else:
form = newListingForm(request.user)
return render(request, 'post/post.html', {'form': form})
Ошибка отладки, которую я получаю:
Unsupported lookup 'user_id' for AutoField or join on the field not permitted.
Обновлено
#accounts model.py
...
class Company(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=200, null=True)
photo = models.ImageField(upload_to='images/%Y/%m/%d/', null=True)
description = models.TextField(null=True)