• 31Jul

    398725Задача. У вас есть две таблици, связаны друг с другом как OneToOne. Но в админке их не удобно править раздельно. Хочется это делать в одном месте. К примеру возьмем профайл и юзер. Хотя мне кажется, что профайлы в джанго — это как кость в горле. Из-за них объединение присоединение больших приложений типа формов или блогов превращается в целый геморой. Но свои соображения и идеи по этому поводу я освещу в отдельно статье.

    1. Вывод записей. Решается просто вы добавляете в админ-моделе ( не знаю, как правильно назвать этот элемент джанги, ваш наследник от admin.ModelAdmin ) функцию

    1. def user_name(self,obj):
    2.         user = obj.user
    3.         return u'%s %s' %(user.first_name,user.last_name)
    4. user_name.short_description = u'Имя'

    и в list_display строку с именем этой функции

    2. Поиск. Тут все просто. В search_fields добавляем user__username
    3. Фильтры. Возможно вы мне подскажите, но у меня не получилось добавить поле из связной таблици в качестве фильтра. Поэтому я просто использую в админке как «основную» – ту таблицу, в которой поля будут использоваться в качестве фильтров. Надо будет залезть в исходники с грязными ногами и выяснить, что за лажа.

    4. Редактирование. Создаем отдельно форму и добавляем в ней новые поля, и переопределяем инициализацию и сохранение.

    1. class ProfileForm(forms.ModelForm):
    2.     first_name = forms.CharField(max_length=30,label=u'Имя')
    3.     last_name = forms.CharField(max_length=30,label=u'Фамилия')
    4.    
    5.     def __init__(self,*args,**kwargs):
    6.         super(ProfileForm,self).__init__(*args,**kwargs)
    7.         user = pr.user
    8.         self.initial.update({
    9.                 'first_name':user.first_name,
    10.                 'last_name':user.last_name
    11.             })
    12.        
    13.     def save(self,*args,**kwargs):
    14.         user = self.instance.user
    15.         user.first_name = self.cleaned_data['first_name']
    16.         user.last_name = self.cleaned_data['last_name']
    17.         user.save()
    18.         return super(ProfileForm,self).save(*args,**kwargs)
    19.        
    20.     class Meta:
    21.         model = M.StatusChatProfile

    Форму передаем нашей админ-моделе.
    С формой есть маленькая проблемка, на которую я наступил. В момент, когда вызывается super(…).save(…) фактическое сохрание данных еще не происходит. И это необходимо учитывать, в случае, если его “таблица напарник” при сохранении изменяет в нем же какие либо поля. Данные в этом случае перетрутся.

    Спасибо за внимание. Вам успехов и удачного дня.

    Rating 3.00 out of 5
    [?]
  • 29Jul

    только что наткнулся на этот “АП”, хотя на самом деле – это такой сборничек маленьких полезных функций и пары декораторов. В принфипе ничего сверхестественного. Но смотреть всем обязательно.

    Rating 3.00 out of 5
    [?]

    Tags: , ,

  • 24Jul

    Времени мало, поэтому сухо и по пунктам.

    Да. Давно не писал. Материала накомилось много, и по разным тематикам. Буду по мере сил и возможности выкладывать сюда.

    Мой стартап не является тематикой этого блога. Поэтому я создал отдельный блог. blog.gameforweb.com/blog. И с первым постом в нем я докладненько все объяснил. А в этом про GFW уже не слова.

    я еще жив!

    Rating 3.00 out of 5
    [?]
  • 11Jul

    99198Наверно пока рано писать подобную статью, т.к. проект еще не стал успешным ( в этом месте акцент прежде всего ставится на слове «ЕЩЕ» ). Но ничего так не разгружает мозги он навязчивых идей, как пост в блоге :)

    Итак, почему важно написать свой проект. Наверно это будет отчасти исповеди или откровение. Лично для меня было все просто. Я выбрал профессию программиста именно для этого проекта. Ведь помните, в детстве, кем каждый хотел стать? И никто, и никогда из детей не говорил; «я хочу стать дантистом, т.к. они реально дофига бобла шибут», или юристом, примерно по тем-же причинам. У всех детей, при выборе профессии помоему всегда было два варианта — это или я хочу как папа, или стоит конкретная цель, например, полететь в коссмос, стать врачем и лечить людей, или стать повором и готовоть самые вкусные и самые ароматные булочки в городе. Самые яркие и светлые мечты были все таки в дестве. Я вообще в детстве профессию менял себе как носки: кинолог, писатель, художник комиксов ( и это только из тех, что я помню, а память у меня не к черту ). И программирование захвотило мое вообредние — как акт созидательного, как то, где нет границ, и на этом безграничии ты волен делать все что угодно. Но в определенный момент — я решил, что буду делать игры. В детстве, с начало, просто на листочке рисовал сам процесс игры + кубики с младшим братом и уже какой то игравой процесс. Потом как-то начал осваивать программирование на Делфи, тогда еще 4 ом. И так, маленькими шажочками мы куда то шли. И углубляясь в изучение какой либо технологии, ты ищеш, где ты это будешь использовать в игре, ты думаешь, что тебе еще не хватает. Так Моисей, довольно долго бродил по пустыне, выбирая где бы переночевать.

    А в определенный момент, ты понимаешь, что всегда будет чего то не хватать, пофиг, додумаем по дороге. И что много надумано, и что для начало и без этого можно обойтись. И что надо начинать. Вот и все.

    Ниже, просто хочу рассказать, уже из своего опыта, чем уже с профессиональной точки зрения мне помог процесс создания своего стартапа.

    Самое главное — это само воспитание. Теперь за проект ты отвечаешь сам перед собой. Не могу сказать, что до этого — я на тяп ляп делал проекты, нет, ответственность была всегда, и каждую задачу я хочу сделать лучше, стабильнее, качественнее. Но теперь это немного другой уровень, тут уже не слукавишь, тут ты уже сам можешь сказать себе: « харе отмазываться, тебе просто было лень это сделать», и тут с собой уже не поспоришь. Правда второй стороной медали было и то, что у тебя начинается мини раздвоение личности, а моем случае оно местами и троилось. Был Саша-Менеджер, Саша-Программист, он же основной трудяга и Саша-Дизайнер, который вообще не понимает, почему его пригласили на проект, он же и рисовать то толком не умеет. И отношения между этими тремя людьми складывали по своему.

    Например. Саша-дизайнер и Саша-программист методом проб и ошибок — поняли, что создавать продукт всегда!, нет лучше так ВСЕГДА!!! надо начиная с интерфейса, и если Саша программист примерно понимал, что где будет и как оно примерно должно работать, то когда Саша-дизайнер начал «придумывать» интерфейс, оказалось, что этот програмистишка, что-то не то себе надумал, что то не учел, что то вообще не надо. И начались мучительные переделки. И еслиб эти двое хорошо друг друга не знали, то поссорились бы, а то гляди и подрались бы. Но благо, оба понимали, что для общего дела стараемся. Поэтому, закрепим. Всегда с начало интерфейсы, а потом уже функционал, потому что функционал пишется под интерфейсы а не наоборот.

    Или вот. Саша-программист, сразу решил — у нас все будет самое охринитетльное в мире, самое новое, самое универсальное и расширяемое, и так было довольно долго, пока у Саши программиста не поехала крыша и не появился Саша-менеджер, который ему популярно объяснил, что не стоит городить черти что, пока ты еще не знаешь, на что в системе у тебя будет основной упор, где у тебя будут узкие места. И самое главное, ты еще не знаешь, надо ли это людям, чем они больше всего будут пользоваться. Поэтому давай ка ты Санек, лучше запустишь что есть, а потом уже будем смотреть, что нам еще не хватает. И теперь жалеет Саша-программист, что Саша-менеджер подключился к нему так поздно, и пришлось ему местами куски кода временно убирать, чтоб что то уже запустить.

    Вы уж простите, что в тексте так много слов «Саша», у меня уже у самого начало рябить в глазах. Так что еще одной причиной, почему стоит попробовать начать сделать свой проект — чтоб почувствовать себя в роли всех его участников, и теперь ты адекватно можешь оценить значение каждого из этих людей в команде.

    И как бы смешно не выглядело это «наше общение» – это была абсолютно нормальная переписка через трек. Было несколько компонентов в треке, и когда за комп «садился», например, программист, то он открывал свой компонент, смотрел, что там надо сделать и делал. Если у него в процессе работы были вопросы или идеи к «комуто еще» или просто он какуюто багу нашел, он просто оставлял им тикет, и продолжал работать над своими задачами. И когда кто то из них сядет, то он начнет уже разгибать свои тикеты, и оставлять новые.

    Вот такой свой мини опыт я вынес на еще только начальном этапе своего проекта. А знаете, что самое обидное — ведь читал я это уже и не в одной книге, а нет, надо пойти и обжечься самому. Так что это уже четвертый опыт — верь умным и бывалым дядькам, сэкономишь время, ведь теперь понимаешь, что лучше опираться на опыт, чем на догадки.

    Rating 3.00 out of 5
    [?]
  • 10Jul

    ну стандартная проблема, что-то не учел. В моем случае – некоторые пользователи не могли нормально законектица.

    а некоторым не получилось поиграть.

    В общем что рассказывать. По ночам как-то получалось выкраивать время и еще и еще проверять работу. А ошибок в месте конекта – оказалось много. Наверно из-за того, что систему тестирования самого игрового процесса – я написал, а слона то я и не заметил. Ну даладно, это лирика и оправдания, а я не люблю когда начинают оправдываться – делать надо.

    Поэтому сегодня залил кое какие обновления. Красивее ничего не стало, но очень надеюсь, что стало стабильнее.

    На всякий случай добавил контакт форму http://monopoly.gameforweb.com/media/contact.html – для идей предложений и флуда.

    так что. Все играть!!!

    Rating 3.00 out of 5
    [?]

    Tags:

  • 06Jul

    monopolygameboardНу вот оно наконец то и случилось. Маленький шаг к исполнении моего грандиознейшго плана.Многие мои друзья знают, что мусолю я тему эту уже довольно давно, но ничто так не мучает, как затянутая разработка. Так что в субботу я решил отдохнуть от компа ( у меня уже наверно пару месяцев не было выходных), как следствие напился. А в воскресенье с утра сразу же зашился в жесткий девелоп, никаких мессенджеров, отрубился, чтоб не отвлекали. Правда временами почту проглядывал.

    Вчера ночь, которая медленно перетекла в сегодняшнее утро, которое после небольшого сна перетекло уже в сегодняшний день. К утру мега комит на 255 файлов изменений. Муки с ие6 и сафари. Кстати с ие7 не пробовал, так что если у кого есть скажите, в нем он выглядит красивее? И вот первая игра Монополия, которая должна стать частью серии настольных игр от gameforweb.com. Раз уж блог у нас больше программестический, то сразу скажу — что под капотом. Python2.6 (спасибо Гугу), Django (trunk), twisted и простой socketServer. На клиенте Jquery и Flash(AS3). Тщательно перемешали и выдали. Правда для релиза пришлось ввести некоторые ограничения на фишки, которые еще ну совсем сыроваты. И у интерфейса язык пока английский, ну как английский, ну мой английский. Мультиязычность заложена, но пока убрал, так что скоро добавлю русский, ну как русский…

    С релизом и первыми пробными играми с друзьями — у меня уже полные штаны счастья. Но тем не менее буду рад нескольким ложкам дегтя у себя в комментах. Самую первую положу я сам себе, и даже оформлю его в виде этого вопроса к аудитории. Есть тут хорошие дизайнеры? Либо друзья или родственники хороших дизайнеров?

    Кто не знает как играть в эту игру – вкратце рассказываю. Настольная игра — ходим по очереди. Кубик бросается автоматом. По окончанию хода незабываем нажимаем EndTurn в правом верхнем углу, чтоб передать ход следующему игроку. С каждым ходом фишка игрока переходит на позицию с карточкой недвижимости или шансом или тюрьма. Дальше модельный ряд карточек будет расширяться, но пока это все. Если вы наступаете на карточку недвижимости, то если она еще никем не куплена — покупаем ее, если уже куплена, то платите игроку ее купившему. Карточки можно собирать в группы. И если вы собрали полностью группу, то открывается возможность покупки отелей на них, которые удорожают стоимость остановки на вашей карточке. Вот и все. Можете пробовать.

    Сразу всем не понравилось, что надо регаться. А куда мне слать спам??

    Пока все.

    Rating 3.00 out of 5
    [?]

    Tags:

   

Recent Posts

Recent Comments

  • Я просто оставлю это тут: ...
  • спасибо...
  • Если вдуматься в каждое слово, то время беСконечно в русском...
  • Спасибо, Евгений, исправленно.P.S.: перехал на диску...
  • за опечатку - спасибо...