python - ManyToMany relationship in django models -
i'm trying add relation between 3 table manytomany relationship. i'm learning python , new django framework. requirement, user can add project , can add permission view user. means user can have multiple projects , project have multiple user. user model default user model of django.
and project model is:
projects/model.py
from django.db import models django.contrib.auth.models import user # create models here. class projects(models.model): project_title = models.charfield(max_length=255) description = models.textfield(blank=true) privacy = models.smallintegerfield(default=1) # 1 public, 2 private status = models.smallintegerfield(default=1) #1 active, 2 deactive, 3 delete, 4 depricated created_at = models.datetimefield('date published', blank=true, default=false) users = models.manytomanyfield(user, through="userprojects") class userprojects(models.model): user = models.foreignkey(user,blank=true, default=false) project = models.foreignkey(projects,blank=true) owner = models.smallintegerfield(default=1) it's not working. when i'm add project produce error..
traceback (most recent call last): file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\core\handlers\exception.py", line 41, in inner response = get_response(request) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\core\handlers\base.py", line 187, in _get_response response = self.process_exception_by_middleware(e, request) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\core\handlers\base.py", line 185, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) file "e:\programs\python\restclient\projects\views.py", line 29, in add p.save() file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\base.py", line 806, in save force_update=force_update, update_fields=update_fields) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\base.py", line 836, in save_base updated = self._save_table(raw, cls, force_insert, force_update, using, upda te_fields) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\base.py", line 922, in _save_table result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\base.py", line 961, in _do_insert using=using, raw=raw) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\query.py", line 1063, in _insert return query.get_compiler(using=using).execute_sql(return_id) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\sql\compiler.py", line 1098, in execute_sql sql, params in self.as_sql(): file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\sql\compiler.py", line 1051, in as_sql obj in self.query.objs file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\sql\compiler.py", line 1051, in <listcomp> obj in self.query.objs file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\sql\compiler.py", line 1050, in <listcomp> [self.prepare_value(field, self.pre_save_val(field, obj)) field in field s] file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\sql\compiler.py", line 990, in prepare_value value = field.get_db_prep_save(value, connection=self.connection) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\fields\__init__.py", line 770, in get_db_prep_save prepared=false) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\fields\__init__.py", line 1459, in get_db_prep_value value = self.get_prep_value(value) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\fields\__init__.py", line 1438, in get_prep_value value = super(datetimefield, self).get_prep_value(value) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\fields\__init__.py", line 1296, in get_prep_value return self.to_python(value) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\db\models\fields\__init__.py", line 1399, in to_python parsed = parse_datetime(value) file "c:\users\jitendra\appdata\local\programs\python\python35-32\lib\site-pac kages\django\utils\dateparse.py", line 94, in parse_datetime match = datetime_re.match(value) typeerror: expected string or bytes-like object [28/jul/2017 22:25:10] "post /projects/add/ http/1.1" 500 145532 and here projects/view.py
def add(request): form = projectform() if request.method == "post": form = projectform(request.post) if form.is_valid(): p = projects(project_title=request.post.get("project_title"), description=request.post.get("description"), status=1, privacy=1) p.save() sp = userprojects(user_id=request.user.id, project_id=p.id) sp.save() p.users.add(sp) messages.success(request, 'profile details updated.') view_data = { "form": form, 'title': "add new project" } return render(request, 'projects/add.html', view_data) i dont know, whats wrong it. please guide me. thanks
from django docs:
class datetimefield(**kwargs)
default widget: datetimeinput
empty value: none
normalizes to: python datetime.datetime object.
validates given value either datetime.datetime, datetime.date or string formatted in particular datetime format.
error message keys: required, invalid
you can read datetimefield validates given value either datetime.datetime, datetime.date or string formatted in particular datetime format, set default=false in model definitions. guess problem lays in there.
Comments
Post a Comment