このインスタンスが表示されているため、次のタイプのエラーが発生します。従業員がユーザと企業との関係で従業員と関係している以下のモデルは、従業員に対する外部キーです。どのように私は会社のインスタンスを取得することでこれを解決することができますか?それとも何が問題なの?django - TypeErrorユーザーインスタンスから外部キーのインスタンスを取得する方法
この問題はされています。以下は
companysetting_form = CompanySettingEdit(instance = request.user.employee.company)
は例外TypeError以下
TypeError at /employee/companysettings/
__init__() got an unexpected keyword argument 'instance'
Request Method: GET
Request URL: http://127.0.0.1:8000/employee/companysettings/
Django Version: 1.11.7
Exception Type: TypeError
Exception Value:
__init__() got an unexpected keyword argument 'instance'
Exception Location: /Users/megasap/Documents/project/railercom/railercomapp/views.py in employee_companysettings, line 83
Python Executable: /Users/megasap/Documents/project/myvirtualenv/railercom/bin/python
Python Version: 3.6.3
Python Path:
['/Users/megasap/Documents/project/railercom',
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip',
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6',
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload',
'/Users/megasap/Documents/project/myvirtualenv/railercom/lib/python3.6/site-packages']
では私のコードです:
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/views.py
@login_required(login_url='/employee/sign-in/')
def employee_companysettings(request):
companysetting_form = CompanySettingEdit(instance = request.user.employee.company) <---- this is the problem
if request.method == "POST":
companysetting_form = CompanySettingEdit(request.POST, instance = request.user.employee.company)
if companysetting_form.is_valid():
companysetting_form.save()
return render(request, 'employee/account.html', {
"companysetting_form":companysetting_form
})
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/forms.py
class CompanySettingEdit(forms.Form):
name = forms.CharField(max_length=50, required=False)
tel = forms.CharField(max_length=50, required=False)
address_1 = forms.CharField(max_length=50, required=False)
address_2 = forms.CharField(max_length=50, required=False)
address_zip = forms.CharField(max_length=50, required=False)
address_city = forms.CharField(max_length=50, required=False)
address_state = forms.CharField(max_length=50, required=False)
address_country = forms.CharField(max_length=50, required=False)
class Meta:
model = Company
fields = ("name", "tel", "address_1", "address_2", "address_zip",
"address_city","address_state","address_country")
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{% bootstrap_form companysetting_form %}
<button type="submit" class="btn btn-pink">Update</button>
</form>
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/models.py
class Company(models.Model):
name = models.CharField(max_length=50)
tel = models.CharField(max_length=15, blank=True)
address_1 = models.CharField(max_length=50, blank=True)
address_2 = models.CharField(max_length=50, blank=True)
address_zip = models.CharField(max_length=20, blank=True)
address_city = models.CharField(max_length=20, blank=True)
address_state = models.CharField(max_length=20, blank=True)
address_country = models.CharField(max_length=20, blank=True)
logo = models.ImageField(upload_to='company_logo/', blank=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
'forms.Form'のコンストラクタは、' instance'キーワード引数を受け入れていないようです。コメントのお寄せいただきありがとうございます。ご指導をお願い致します。 – CristiFati
このフォームは機能しますが、フォームデータをモデルに保存する必要があります。フォームコンストラクタで__init__を持つ必要がありますか?おかげさまで https://gist.github.com/anonymous/db51370aaf0ce759ab51cb24fc390633 – Axil