i have list of employees work @ site. each site owned user (using django's standard user model).
i want create form adds employee , automatically links them site dependent on authenticated user is:
models.py:
class employee(models.model): site = models.foreignkey(site, null=true) employee_name = models.charfield(default='name', max_length=128, blank=false, null=false) class site(models.model): user = models.foreignkey(user) site_name = models.charfield(max_length=128, blank=false, null=false) views.py:
site_profile = site.objects.get(user=request.user) if request.method == "post": form = employeeaddform( request.post ) if form.is_valid(): obj = form.save(commit=false) obj.site = site_profile obj.save() return redirect('dashboard_home') form = employeeaddform() return render(request, "dashboard/employees.html", {'form': form }) forms.py:
class employeeaddform(forms.modelform): class meta: model = employee fields = ( 'employee_name') this code add employee database, in django admin, list_display = 'site' results in site object not actual site name. not appear employee linked site.
if use obj.site = site_profile.id (adding .id), error cannot assign "1": "employee.site" must "site" instance.
found error: above code correct, had tab ordering error in site model
class site(models.model): ... def __str__(self): return self.site_name def should have been inserted 1 tab inwards.
Comments
Post a Comment