Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Админка, пользователь и автозаполнение поля. [RSS Feed]

#1 Июнь 21, 2013 11:26:50

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

Админка, пользователь и автозаполнение поля.

Возможно кто сталкивался с таким.
В шаблоне я примерно представляю как это написать {% if request.user == item.company.user %}
Но хотят в админке и не автозаполнение, а сделать поле необязательным для конктретного пользователя.
Сейчас гуглю на эту тему, но не очень успешно.
1. В создании “Вакансии” данные о компании для избранных пользователей не обязательны.
Первая идея соотвевенно сделать группу, по группе сделать проверку, но опыта ковыряния в админке у меня небыло доселе.



Отредактировано chaotism (Июнь 21, 2013 11:28:17)

Офлайн

#2 Июнь 21, 2013 11:36:06

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

Админка, пользователь и автозаполнение поля.

http://getopts.blogspot.ru/2008/12/django.html Зацепку вроде нашел
http://www.askdev.ru/django/5204/%D0%92%D0%BE%D0%BF%D1%80%D0%BE%D1%81-%D0%BF%D0%BE-%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%BA%D0%B5/

сделать проверку по группе и переопределить метод create?
и сделать новый шаблон
http://brainsburn.blogspot.ru/2011/09/django.html ?



Отредактировано chaotism (Июнь 21, 2013 11:44:08)

Офлайн

#3 Июнь 23, 2013 12:09:48

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

Админка, пользователь и автозаполнение поля.

или появилась мысль попробовать переопределить метод save в модели



Офлайн

#4 Июнь 29, 2013 12:38:29

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

Админка, пользователь и автозаполнение поля.

при проверке в моделе.

class BaseRealty(models.Model):
user = models.ForeignKey(User, related_name="%(app_label)s_%(class)s")
locality = models.CharField(max_length=3, choices=LOCALITIES, verbose_name=u'Населенный пункт')
rating = models.IntegerField(default=0, blank=True)
address = models.CharField(max_length=150, verbose_name=u'Адрес (улица, дом, корпус)', blank=True)


def save(self, *args, **kwargs):
if self.user:
self.rating = 5

super(BaseRealty, self).save(*args, **kwargs) # Call the "real" save() method.

получается проверить на наличие, а вот что то другое if self.user==“boss” или len(self.user)>1, не работает



Офлайн

#5 Июль 2, 2013 13:53:31

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

Админка, пользователь и автозаполнение поля.

в итоге сделал так добавил два доп поля и сделал проверку по пользователю, если пользователь обычный то они автозаполняются(если есть имя и фамилия то ими, если нет то ник), а в админке не заполняются если избраный, то заполнять можешь сам, а админке они отображаются

 class BaseRealtyAdmin(admin.ModelAdmin):
    inlines = [ RealtyImageInline, get_inline(MyMetadata)]
    def get_form(self,request,obj=None,**kwargs):
        """
        Динамически создаем форму в зависимости от условий
        """
        form = super(BaseRealtyAdmin,self).get_form(request,obj,**kwargs)
        user = request.user
        if not bool(user.groups.filter(pk=1)):
            del form.base_fields['user_name']
            del form.base_fields['user_email']
        return form
    def save_model(self, request, ad, form, change):
        user = request.user
        
        if not ad.user:
            ad.user=request.user
        if not bool(user.groups.filter(pk=1)) and user.is_superuser:
            if len(ad.user.first_name.strip()):
                ad.user_name=ad.user.first_name+' '+ad.user.last_name
            else:
                ad.user_name=ad.user.username
            ad.user_email=ad.user.email
        super(BaseRealtyAdmin, self).save_model(request, ad, form, change)



Отредактировано chaotism (Июль 2, 2013 13:54:45)

Офлайн

  • Начало
  • » Django
  • » Админка, пользователь и автозаполнение поля.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version