Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » django вывести значение из БД с ManyToManyField [RSS Feed]

#1 Ноя. 9, 2015 10:50:39

Xa_xoo
Зарегистрирован: 2015-08-28
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

django вывести значение из БД с ManyToManyField

Добрый день. Нужно вывести из бд значения на страничку. Столкнулся с проблемой: при выводе значение с полем ManyToManyField выдает такое: app.AuthUser.None , хотя поле не пустое… модель:

class AuthUser(AbstractBaseUser, PermissionsMixin):
alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', message='Only alphanumeric characters are allowed.')
username = models.CharField(unique=True, max_length=30, validators=[alphanumeric])
email = models.EmailField(verbose_name='email field', unique=True, max_length=255)
first_name = models.CharField(max_length=50, null=True, blank=True)
second_name = models.CharField(max_length=50, null=True, blank=True)
last_name = models.CharField(max_length=50, null=True, blank=True)
# date_joined = models.DateTimeField(auto_now_add=True)
date_joined = models.DateTimeField(default=timezone.now())
is_active = models.BooleanField(default=True, null=False)
is_staff = models.BooleanField(default=False, null=False)
# profile_image = models.ImageField(upload_to='uploads', blank=False, default='/static/selfphoto.jpg')
user_bio = models.TextField()
perm = models.IntegerField(default=0)
podr = models.IntegerField(default=0)
 dolznost = models.CharField(max_length=30, null=True, blank=True)
    objects = AuthUserManager()
    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['email']
    def get_full_name(self):
        return '%s %s %s' .format(self.last_name, self.first_name, self.second_name)
    def get_short_name(self):
        return self.username
    def __str__(self):
        return '%s %s %s %s %s' % (self.last_name, self.first_name, self.second_name, self.podr, self.dolznost)
class Karto(models.Model):
    idname = models.IntegerField(default=0, blank=True, null=True)
    datecreated = models.DateTimeField(default=timezone.now())
    small = models.CharField(max_length=255, blank=True)
    file = models.FileField(upload_to='uploads', blank=True)
    soglas = models.ManyToManyField(AuthUser)
    madeby = models.CharField(max_length=30, blank=True, null=True)
    class Meta:
        ordering = ["idname"]
вьюха:
def docsupdocs(request, idname):
args = {}
args['perm'] = request.user.perm
args['myq'] = Karto.objects.get(idname=idname)
return render_to_response('self_docsupdocs.html', args, context_instance=RequestContext(request))
поле заполнял через админку :
class KartoAdmin(admin.ModelAdmin):
model = Karto
fields = ['idname', 'small', 'file', 'datecreated', 'soglas', 'madeby']
filter_horizontal = ['soglas',]
html^
{% block owned %}
<p> allah </p>
{{ myq.small }}<br>
{{ myq.madeby }}<br>
{{ myq.datecreated }}<br><br>
{{ myq.soglas }}
{% endblock %}
результат: allah

betta test max 5 ноября 2015 г. 11:11

app.AuthUser.None

Офлайн

#2 Ноя. 9, 2015 11:18:53

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

django вывести значение из БД с ManyToManyField

Я виже вы только добавили дополнительные поля. Почему не просто:

from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
?



Second France is best France

Офлайн

#3 Ноя. 9, 2015 11:28:57

Xa_xoo
Зарегистрирован: 2015-08-28
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

django вывести значение из БД с ManyToManyField

не совсем пойму как это повлияет на результат и выход из проблемы…

Офлайн

#4 Ноя. 9, 2015 16:14:03

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

django вывести значение из БД с ManyToManyField

app.AuthUser

А в settings у вас верно указанно названия приложения?



Second France is best France

Офлайн

#5 Ноя. 9, 2015 16:27:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

django вывести значение из БД с ManyToManyField

{{ myq.soglas_set.all }}



Офлайн

#6 Ноя. 10, 2015 05:36:20

Xa_xoo
Зарегистрирован: 2015-08-28
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

django вывести значение из БД с ManyToManyField

ihorgorobets
app.AuthUserА в settings у вас верно указанно названия приложения?
в сеттингс все норм
FishHook
ничего не выдает. если написать {{ myq.soglas.all }}, то выдаст , но в кривом виде: (приложение: фамилия имя отчество подр, должность), как мне избавиться от вывода приложения?
в модели (как в первом посте):
def __str__(self):
        return '%s %s %s %s %s' % (self.last_name, self.first_name, self.second_name, self.podr, self.dolznost)

Офлайн

#7 Ноя. 10, 2015 06:18:48

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

django вывести значение из БД с ManyToManyField

Bad

def __str__(self):

Good
def __unicode__(self):

Xa_xoo, ну ка быстро иди читать учебник!



Офлайн

#8 Ноя. 10, 2015 17:20:17

Xa_xoo
Зарегистрирован: 2015-08-28
Сообщения: 58
Репутация: +  0  -
Профиль   Отправить e-mail  

django вывести значение из БД с ManyToManyField

FishHook
Bad
у меня питон 3 как бы….

Офлайн

#9 Ноя. 10, 2015 18:13:52

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

django вывести значение из БД с ManyToManyField

Xa_xoo
как мне избавиться от вывода приложения?
{{ myq.soglas.all }} - это набор записей,
не одна запись, а queryset.
Поэтому в шаблоне рендерится __repr__ кверисета, то есть его строковое представление.
Вот если вы сделаете цикл по {{ myq.soglas.all }}, то получите отдельные записи, к которым применится __str__().



Офлайн

  • Начало
  • » Django
  • » django вывести значение из БД с ManyToManyField[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version