В django, отобразить всех пользователей с соответствующим изображением профиля на главной странице администратора
Я новичок в django, я работаю над проектом. Я хочу отображать информацию о пользователях с соответствующей фотографией профиля на главной странице администратора. Я использую модель пользователя по умолчанию.
Я использую userdata= User.objects.filter(is_superuser=False, is_staff=False) для отображения всей информации о пользователе
моя модель профиля - это
class Profile(models.Model):
user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
forget_password_token = models.CharField(max_length=100)
image = models.ImageField(upload_to="images",default="default/user.png")
def __str__(self):
return f'{self.user} profile'
Я хочу сделать вот так введите описание изображения здесь
Пожалуйста, помогите мне добиться этого. Заранее спасибо
Я пытаюсь достичь этого из модели пользователя по умолчанию
id | image | name
profile1.jpg john
profile2.jpg poul
profile3.jpg mitch
Я сделал введите описание изображения здесь
В колонке профиля мне нужно изображение профиля соответствующего пользователя
я хочу добиться этого в колонке профиля я хочу отобразить картинку профиля пользователя
Вы не можете запросить is_superuser=False и не можете отобразить изображение, потому что вы фильтруете через встроенную модель User, а не через вашу модель Profile, которая имеет лучшую связь, т.е. связь OneToOne с вашей моделью User. Вы можете просто запросить через модель Profile и выполнить свою работу следующим образом:
Попробуйте следующий код:
models.py
class Profile(models.Model):
user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
forget_password_token = models.CharField(max_length=100)
image = models.ImageField(upload_to="images",default="default/user.png")
def __str__(self):
return f'{self.user} profile'
views.py
from django.shortcuts import render
from . models import Profile
from django.db.models import Q
def showallusers(request):
data = Profile.objects.filter(Q(user__is_superuser=False), Q(user__is_staff=False))
return render(request, "instructor/showallusers.html", {'data': data})
В приведенном выше представлении запрос выполняется через Profile модель.
Файл шаблона
<thead>
<tr style="background-color:gray;">
<th scope="col">ID</th>
<th scope="col">Profile</th>
<th scope="col">First Name</th>
<th scope="col">Last Name</th>
<th scope="col">Email</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
{% for userData in data %}
<tr>
<th scope="row">{{userData.id}}</th>
<td><img style="width: 40px; border-radius:15px;" src="{{userData.image.url}}" alt="this is it."></td>
<td>{{userData.user.first_name}}</td>
<td>{{userData.user.last_name}}</td>
<td>{{userData.user.email}}</td>
<td>
<a href="{% url 'dashboard:delete_user' userData.id %}"> <button class="btn btn-danger btn-sm" onclick="window.mytest()">Delete</button></a>
<script type="text/javascript">window.mytest = function() { var isValid = confirm('Are you sure to Delete this user?');
if (!isValid) { event.preventDefault(); alert("It wont delete. Yay!");}}</script>
</td>
</tr>
{% endfor %}
</tbody>
Note:В качествеuserData.id, который передается какhref="{% url 'dashboard:delete_user' userData.id %}"для удаления, будет взятidизProfileмодели.
Note:Представления в django, основанные наfunction, написаны наsnake_case, поэтому будет лучше, если название представления изменится наshow_all_usersсshowallusers.