我正在开发应用程序,一开始就陷入困境。请在这里帮助我。
models.py
start
用户来自 django.contrib.auth.models
views.py
start "" "MSTest.exe" /testcontainr:C:/MyProject.dll /testsettings:C:MyParallelSettings.testsettings
start "" "MSTest.exe" etc.
start "" "MSTest.exe" etc...
employee_form.html
class Employee(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=False)
designation = models.ForeignKey(Designation, on_delete=models.CASCADE, null=False)
我希望用户模型的字段,而不是class EmployeeCreateView(LoginRequiredMixin, generic.CreateView):
model = Employee
fields = '__all__'
success_url = reverse_lazy('core:view-employees')
def form_valid(self, form):
"""If the form is valid, save the associated model."""
self.object = form.save(commit=False)
self.object.company = self.request.user.company
self.object.save()
form.save_m2m()
return super().form_valid(form)
是选择列表,即<form action="{% url 'core:add-employees' %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" class="bnt btn-small">
</form>
,User
,{ {1}}等,而username
应保留为选择列表。
谢谢。
答案 0 :(得分:0)
您可以在表单的用户字段中使用ModelChoiceField
。创建一个表单类将使其变得更加容易。
请参阅https://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield以供参考。
答案 1 :(得分:0)
有很多方法可以做到这一点。如果您仅将designation
字段用作User的额外字段。只需将designation
添加到User模型即可。
为此,您可以按以下方式使用多表继承。
class Employee(User): # change Here
# Remove -> user = models.OneToOneField(User, on_delete=models.CASCADE, null=False)
designation = models.ForeignKey(Designation, on_delete=models.CASCADE, null=False)
现在,您将获得想要的东西。但是请注意,这在许多情况下不是最佳用例,因为它在数据库表中创建了左外部联接。 但对于这种情况,我认为它不会影响任何事情。
要了解有关Django多表继承的更多信息,请参见:https://docs.djangoproject.com/en/2.1/topics/db/models/#multi-table-inheritance
有关扩展用户模型的其他方式,请参见:https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html