Найти - Пользователи
Полная версия: получить логин пользователя
Начало » Django » получить логин пользователя
1
aleksander937
У меня вопрос довольно простой, но ответа нормального не нашел, поэтому лучше не тратить время на ответы “погугли” или “посмотри в мануале”.
Суть задачки такова: любой зарегистрированный пользователь может добавлять запись в базу данных

class Poll(models.Model):
name = models.CharField(max_length=200)
tag = models.CharField(max_length = 200)
price = models.IntegerField(max_length = 20)
link = models.CharField(max_length = 200)
status = models.CharField(max_length = 200)
pub_date = models.DateTimeField('date published')
author = ?

def __unicode__(self):
return self.name

по определению автор заполняет вышеуказанные строки, а строка authot должна принимать login данного пользователя.
Никак не соображу как это сделать.
GreyZmeem
from django.contrib.auth.models import User
 
class Poll(models.Model):
    name = models.CharField(max_length=200)
    tag = models.CharField(max_length = 200)
    price = models.IntegerField(max_length = 20)
    link = models.CharField(max_length = 200)
    status = models.CharField(max_length = 200)
    pub_date = models.DateTimeField('date published')
    author = models.ForeignKey(User)
 
    def __unicode__(self):
        return self.name
aleksander937
GreyZmeem в данном есть некоторый изъян…при таком подходе, он предлагает выбрать как автора любого из Зарегистрированных пользователей!!! То есть есть возможность указать в качестве автора и не себя, а вопрос именно в том, чтобы автор определялся автоматически
botinag
Для админки пробуйте так:
from django.contrib.auth.models import User
 
class Poll(models.Model):
    name = models.CharField(max_length=200)
    tag = models.CharField(max_length = 200)
    price = models.IntegerField(max_length = 20)
    link = models.CharField(max_length = 200)
    status = models.CharField(max_length = 200)
    pub_date = models.DateTimeField('date published')
    author = models.ForeignKey(User)
 
    def __unicode__(self):
        return self.name
 
 
from django.contrib import admin
 
class PollAdmin(admin.ModelAdmin):
    fields = ('name', 'tag', 'price', 'link', 'status')
 
    def save_model(self, request, obj, form, change):
        obj.author = request.user
        obj.save()
 
admin.site.register(Poll, PollAdmin)

GreyZmeem
Еще у ModelAdmin можно переопределить метод get_field_queryset, который будет возвращать нужный queryset для этого поля.
def get_field_queryset(self, db, db_field, request):
    if db_field.name == 'author':
        return User.objects.filter(...)
    return super(PoolAdmin, self).get_field_queryset(db, db_field, request)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB