我已经在 views.py 文件中看到了一种做我想做的事情的方法,但是因为我可能会在几个不同的地方使用该表单,并且因为我相信它更属于 forms.py,我想知道是否以及如何在不修改视图的情况下,为某个特定用户使用已存储在数据库中的数据预先填写我的表单。看看我尝试过的东西会不言自明:
模型.py:
class Customers(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='details')
city = models.CharField(max_length=50, blank=True, null=True)
dpt = models.IntegerField(blank=True, null=True)
adress = models.CharField(max_length=100, blank=True, null=True)
cplt_add = models.CharField(max_length=100, blank=True, null=True)
phone = models.CharField(max_length=14, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
形式.py:
class CustomerForm(ModelForm):
def __init__(self):
for field in self.fields:
user_infos = Customers.objects.get(pk=request.user.details.id)
initial_value = user_infos.field
field(initial=initial_value)
def clean_form(self):
...
class Meta:
model = Customers
fields = ['city', 'adress', 'dpt', 'cplt_add', 'phone']
widgets = {
'city': TextInput(attrs={
'class': 'form_input',
'placeholder': 'Ville'}),
'dpt': TextInput(attrs={
'class': 'form_input', …Run Code Online (Sandbox Code Playgroud)