Как связать пользовательскую модель с другой моделью для представления пользовательского портала в Django

#django #portal

#django #Портал

Вопрос:

Я работаю над приложением для обмена книгами. Как я могу реализовать пользовательский портал, чтобы текущий зарегистрированный пользователь мог просматривать, изменять и удалять загруженные им книги.

Вот мой текущий рабочий процесс:

models.py

 from django.db import models
from django.contrib.auth.models import User

CONDITION_CHOICES = (
  ('Fair', 'Fair'),
  ('Good', 'Good'),
  ('Excellent', 'Excellent'),
)

BIND_CHOICES = (
  ('LooseLeaf', 'Loose Leaf'),
  ('PaperBack', 'Paper Back'),
  ('HardCovered', 'Hard Covered'),
)

class Book(models.Model):
  user_id = models.ForeignKey(User, null=True, blank=True)

  title = models.CharField(max_length = 255)
  author = models.CharField(max_length = 255)
  course_designator = models.CharField(max_length = 3)
  course_number = models.PositiveSmallIntegerField(max_length = 3)
  condition = models.CharField(max_length = 20, choices = CONDITION_CHOICES)
  bind_type = models.CharField(max_length = 20, choices = BIND_CHOICES)
  notes = models.TextField(blank=True)
  price = models.PositiveSmallIntegerField(max_length = 3)
  posted = models.DateTimeField(auto_now_add=True)
  approved = models.BooleanField(default=False)

  def __unicode__(self):
    return "%s %s : %s" % (self.course_designator, self.course_number, self.title)

  def get_absolute_url(self):
    return "/books/get/%i/" % self.id
  

admin.py

 from django.contrib import admin
from ExchangeApp.models import Book

class BookAdmin(admin.ModelAdmin):
  list_display = ('title', 'author', 'course_designator', 'course_number', 'condition', 'bind_type', 'price', 'approved')

  def save_model(self, request, obj, form, change):
      obj.user = request.user
      obj.save()

  def save_formset(self, request, form, formset, change):
      if formset.model == Book:
          instances = formset.save(commit=False)
          for instance in instances:
              instance.user = request.user
              instance.save()
      else:
          formset.save()

admin.site.register(Book, BookAdmin)
  

views.py

 def portal(request):
  user = request.user
  #NEED HELP HERE
  return render(request, 'portal.html',{

  })
  

Комментарии:

1. user.book_set.all() Выдает вам список всех Book объектов, загруженных пользователем. Отправьте это в контексте, и у вас будет то, что вам нужно.

2. Спасибо, именно то, что мне было нужно