Reputation: 3347
I am trying to implement the above to add a field 'posts' to the user model using the first option, extended it.
models.py
from django.contrib.auth.models import User
class NewUserModel(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
posts = models.IntegerField(default=0)
views.py
def site_users(request):
site_users = User.objects.all().reverse()
paginator = Paginator(site_users, 10)
page = request.GET.get('page')
try:
users_model = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
users_model = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
users_model = paginator.page(paginator.num_pages)
return render(request, 'site_users.html', {'users_model': users_model, 'current_time': timezone.now()})
But how can I get the posts field in the template, (updated, corrected and working!)
{% for item in users_model %}
<tr>
<td><a href="{% url 'profile' item.id %}">{{ item.username }}</a></td>
<td>{{ item.newusermodel.posts }}</td>
<td></td>
<td></td>
</tr>
{% endfor %}
The tables in the sqlite3 DB have no User model, but it does have auth_user. Should i be using that instead of User?
Thanks,
Upvotes: 0
Views: 1269
Reputation: 2454
users_model
doesn't reference NewUserModel
, it references User
. You need to access the related model in your template like so:
{% for item in users_model %}
<tr>
<td><a href="{% url 'profile' item.id %}">{{ item.username }}</a></td>
<td>{{ item.newusermodel.posts }}</td>
<td></td>
<td></td>
</tr>
{% endfor %}
Upvotes: 1